/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.mindbox.mueblesalpes.negocio.utilidades;

import com.mindbox.mueblesalpes.negocio.entity.TipoDocumento;
import com.mindbox.mueblesalpes.negocio.entity.TipoUsuario;
import java.text.DateFormat;
import java.text.ParseException;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

/**
 *
 * @author Diana Carolina
 */
public class UtilidadesMock implements IUtilidades {

    /**
     * Método que retorna un listado de paises
     * @return
     */
    public List consultarPaises() {
        List paises = new ArrayList();
        paises.add("Argelia");
        paises.add("Brasil");
        paises.add("Peru");
        paises.add("Bolivia");
        paises.add("Venezuela");
        paises.add("Ecuador");
        paises.add("Colombia");
        paises.add("Estados Unidos");
        paises.add("Mexico");
        paises.add("Puerto Rico");
        paises.add("Canada");
        return paises;
    }
    /**
     * Método que retorna un listado de tipos de usuario
     * @return
     */
    public List consultarTipoUsuarios(){
        List tipoUsuarios = new ArrayList();
        TipoUsuario []valores = TipoUsuario.values();
        for(int i = 0; i < valores.length; i++ ){
            tipoUsuarios.add(valores[i]);
        }
        return tipoUsuarios;
    }
    /**
     * Método que retorna una lista con los tipos de documento
     * @return
     */
    public List consultarTipoDocumento(){
        List tiposDocumento = new ArrayList();
        TipoDocumento []valores = TipoDocumento.values();
        for(int i = 0; i<valores.length; i++){
            tiposDocumento.add(valores[i]);
        }
        return tiposDocumento;
    }
    /**
     * Método que retorna una lista con nombres de ciudades
     * @return
     */
    public List consultarCiudades(){
        List ciudades = new ArrayList();
        ciudades.add("Medellin");
        ciudades.add("Bogota");
        ciudades.add("Bucaramanga");
        ciudades.add("Manizalez");
        ciudades.add("Armenia");
        ciudades.add("Barranquilla");
        ciudades.add("Cali");
        return ciudades;
    }
    /**
     * Método que retorna una lista con nombres de departamentos
     * @return
     */
    public List consultarDepartamentos(){
        List deptos = new ArrayList();
        deptos.add("Antioquia");
        deptos.add("Cundinamarca");
        deptos.add("Caldas");
        deptos.add("Magdalena");
        deptos.add("Valle");
        return deptos;
    }
    /**
     * Método que valida la diferencia existente entre dos fechas
     * @param fechaInicial
     * @param fechaFinal
     * @return días de diferencia entre una fecha y otra
     * @throws java.text.ParseException
     */
    public int fechasDiferenciaEnDias(Date fechaInicial, Date fechaFinal) throws java.text.ParseException {

		// Formateo la Fecha para que solo tenga en cuenta los dias naturales
		// y no los segundos ni milisegundos

		DateFormat df = DateFormat.getDateInstance(DateFormat.MEDIUM);

		String fechaInicioString = df.format(fechaInicial);
		try {
		fechaInicial = df.parse(fechaInicioString);
		}
		catch (ParseException ex) {
		}

		String fechaFinalString = df.format(fechaFinal);
		try {
		fechaFinal = df.parse(fechaFinalString);
		}
		catch (ParseException ex) {
		}

		// el metodo getTime devuelve la fecha en milisegundos
		long fechaInicialMs = fechaInicial.getTime();
		long fechaFinalMs = fechaFinal.getTime();
		// diferencia en milisegundos
		long diferencia = fechaFinalMs - fechaInicialMs;
		//conversion miliseg a dias
		double dias = Math.floor(diferencia / (1000 * 60 * 60 * 24));
		return ( (int) dias);
		}
    /**
     * Método que retorna el numero de semanas que han transcurrido entre un número de días especificado
     * @param dias
     * @return
     */
        public int semanasTranscurridas(int dias){
            int semanas = dias / 7 ;
            if(semanas == 0){
                return 1;
            }
            else return semanas;
        }
}
